In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Król Bajtazar organizuje wielką ucztę z okazji swoich 128. urodzin.
Postanowił zaproszonych gości usadzić przy okrągłych stołach tak,
żeby żaden z gości nie siedział przy stole sam.
Wybrał już osób, które mógłby zaprosić na przyjęcie.
Następnie uszeregował gości w kolejności od najważniejszych i ponumerował ich kolejno od
do
(gość numer
jest najważniejszy).
Goście są bardzo wymagający: każdy z nich podał królowi wymagania odnośnie do tego,
kto może siedzieć po jego prawej stronie.
Król chce, aby każdy z zaproszonych gości miał dogodne towarzystwo, toteż nie pozwoli, aby wymagania któregoś z gości nie zostały spełnione.
Może się więc okazać, że nie uda się zaprosić wszystkich osób.
Bajtazar poprosił Ciebie (nadwornego informatyka) o wyznaczenie najlepszego
z możliwych zbiorów zaproszonych gości i przykładowego usadzenia ich przy okrągłych stołach.
Król, spytany o to, co miał na myśli, mówiąc o najlepszym zbiorze gości,
odpowiedział zaskakująco rzeczowo, jak na
-letniego informatycznego laika:
Aby porównać dwa zbiory gości, wybieram osobę o najmniejszym numerze, która należy do dokładnie jednego z porównywanych zbiorów. Ta właśnie osoba należy do lepszego zbioru.
Przy tak określonym porządku można faktycznie jednoznacznie określić, który z potencjalnych zbiorów gości jest najlepszy.
W pierwszym wierszu wejścia znajduje się liczba całkowita (
)
oznaczająca liczbę gości.
W
-tym z kolejnych
wierszy znajduje się opis preferencji osoby o numerze
.
Opis preferencji rozpoczyna się od liczby całkowitej
(
).
Po niej następuje
parami różnych
numerów osób - są to liczby całkowite z zakresu od
do
, różne od
.
Każda taka liczba określa jedną osobę, która może usiąść po prawicy osoby numer
.
Suma liczb
nie przekracza
.
W testach wartych punktów zachodzi dodatkowo warunek: jeśli osoba
zezwala na posadzenie
osoby
po swojej prawej stronie, to również osoba
zezwala na posadzenie osoby
po swojej prawej stronie.
W szczególności oznacza to, że te dwie osoby mogą usiąść razem przy jednym, dwuosobowym stole.
W testach wartych punktów da się zaprosić wszystkie
osób na przyjęcie.
W pierwszym wierszu wyjścia powinna znaleźć się liczba całkowita ,
oznaczająca liczbę stołów w znalezionym rozwiązaniu.
Następne
wierszy powinno zawierać opisy poszczególnych stołów.
Opis stołu rozpoczyna się od liczby całkowitej
oznaczającej liczbę gości przy nim siedzących.
Dalej następuje
liczb oznaczających ich numery.
Numery gości powinny być podawane kolejno, w porządku przeciwnym do kierunku ruchu wskazówek zegara.
Pierwszy z wypisanych gości będzie siedział po prawej stronie ostatniego z gości.
Dla danych wejściowych:
6 3 2 6 3 0 1 4 1 1 1 4 1 5
poprawną odpowiedzią jest:
1 3 1 3 4
W powyższym przykładzie lepiej zaprosić na ucztę osoby ,
oraz
niż osoby
,
,
oraz
.
Zgodnie z kryterium króla lepszy zbiór wyznacza osoba o numerze
.
Autor zadania: Marcin Smulewicz.